import { createSlice } from '@reduxjs/toolkit';

export const userSlice = createSlice({
    // 命名空间，在调用action的时候会默认的设置为action的前缀
    name: 'user',
    // 初始值
    initialState: {
        username: 'jueyi',
        level: 1,
    },
    // 这里的属性会自动的导出为actions，在组件中可以直接通过dispatch进行触发
    reducers: {
        increment(state, { payload }) {
            state.level = state.level + payload.level;
        },
        decrement(state) {
            state.level -= 1;
        },
    },
});

// 导出actions
export const { increment, decrement } = userSlice.actions;

// 内置了thunk插件，可以直接处理异步请求
export const asyncIncrement:any = (payload) => (dispatch) => {
    setTimeout(()=> dispatch(increment(payload)),1000);
};

// 导出reducer，在创建store时使用到
export default userSlice.reducer;